package Controlador;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import org.w3c.dom.DOMException;

import remoto.Proxy;
import xml.CPR_In_RemitoProveedor;
import xml.CPR_ListaPreciosXml;
import xml.CPR_Out_PedidoaProveedoresXml;
import xml.ProveedorXmlDao;
import dominio.Proveedor;
import dominioTO.ItemListaPreciosTO;
import dominioTO.ListaPreciosTO;
import dominioTO.OrdenCompraProveedorTO;
import dominioTO.ProveedorTO;
import dominioTO.RemitoProveedorTO;
import dominioTO.RodamientoTO;

public class CPR {
	private static CPR instancia;
	private List<Proveedor> proveedores;
	
	public static CPR getInstancia()
	{
		if(instancia==null)
		{
			instancia = new CPR();
		}
		return instancia;
	}
	
	public CPR()
	{
		proveedores = new ArrayList<Proveedor>();
		
	}
	
	public List<ProveedorTO> altaProveedorXML() throws RemoteException
	{
		
			List<ProveedorTO> listProvTO = ProveedorXmlDao.getInstancia().recuperarProveedores();
			System.out.println(listProvTO.toString());
			Proxy.getInstancia().persistirProveedor(listProvTO);
			return listProvTO;
		
	}

	public ListaPreciosTO altaListaDePreciosXmlProveedores(String archivoNombre) throws RemoteException, DOMException
	{

			ListaPreciosTO listaTO= CPR_ListaPreciosXml.getInstancia(archivoNombre).leerElementos();
			
			if(listaTO!=null)
			{
				Proxy.getInstancia().persistirListaPrecios(listaTO);	
				return listaTO;				
			}			
			return null;		
	}
	
	public void setNuevoPorcentajeGanancia(Integer i) throws RemoteException
	{
		Proxy.getInstancia().cambiarPorcentajeDeGanancia(i);
	}
	
	public void generarOrdenesDePedidoAProveedores() throws RemoteException
	{
		List<OrdenCompraProveedorTO> ordenesDeCompra =Proxy.getInstancia().generarOrdenesDePedidoAProveedores();
		for(OrdenCompraProveedorTO dto: ordenesDeCompra)
		{
			CPR_Out_PedidoaProveedoresXml.generarCotizacionXML(dto);
		}
		
	}
	public ItemListaPreciosTO getItemListaPrecioFromOrdenCompra(Integer id, RodamientoTO rod) throws RemoteException
	{
		return Proxy.getInstancia().getItemListaPrecioFromOrdenCompra(id, rod);
	}
	public OrdenCompraProveedorTO buscarOrdenCompraProveedor(Integer idOrdenCompraProveedor) throws RemoteException
	{
		return Proxy.getInstancia().buscarOrdenCompraProveedor(idOrdenCompraProveedor);
	}
	
	public void recibirRemitosDeProveedores(String nombreArchivo) throws RemoteException
	{
		RemitoProveedorTO aux = CPR_In_RemitoProveedor.getInstancia(nombreArchivo).recibirRemitoProveedor1();
		Proxy.getInstancia().persistirRemitoProveedor(aux);
		System.out.println("\n CPR Web Remito: "+aux.toString());
	}
	
}
